package com.linkgie.galaxyframework.crypto;

/**
 * 对称密钥解析器；
 * 
 * @author liso
 *
 */
public interface SymmetricKeyResolver {

	/**
	 * 根据编码的密钥字符生成密钥对象；
	 * <p>
	 * 
	 * 如果算法不存在或者不匹配，则抛出异常 {@link CryptoException}；
	 * <p>
	 * 
	 * @param encodedString 编码后的密钥字符；<br>
	 *                      对应于同一个密钥对象通过方法 {@link SymmetricKey#getEncodedString()}
	 *                      返回的结果；
	 * @return 对称密钥；
	 */
	SymmetricKey resolveSymmetricKey(String encodedString);

	/**
	 * 根据编码的密钥字节数据生成密钥对象；
	 * <p>
	 * 
	 * 如果算法不存在或者不匹配，则抛出异常 {@link CryptoException}；
	 * <p>
	 * 
	 * @param encodedBytes 编码后的密钥字节数据; <br>
	 *                     对应于同一个密钥对象通过方法 {@link SymmetricKey#getEncoded()}
	 *                     返回的结果；
	 * @return
	 */
	SymmetricKey resolveSymmetricKey(byte[] encodedBytes);

}